#include <SoftwareSerial.h>
#include <Adafruit_NeoPixel.h>
#include "Arduino.h"
#include "DFRobotDFPlayerMini.h"
#include <Timer2ServoPwm.h>
volatile char duoji;
Adafruit_NeoPixel rgb_display_11 = Adafruit_NeoPixel(60,11,NEO_GRB + NEO_KHZ800);

DFRobotDFPlayerMini myPlayer;
volatile int chao1;
Timer2Servo servo_5;
int flag=0;
int x=1;
SoftwareSerial mySerial(2, 3);//Serial RX, TX白

// 定义火焰传感器的模拟输出和数字输出引脚
int analogPin = A0; // 模拟输出连接到A0
int digitalPin = 4; // 数字输出连接到数字2
float checkdistance_A2_A3() {
  digitalWrite(A2, LOW);
  delayMicroseconds(2);
  digitalWrite(A2, HIGH);
  delayMicroseconds(10);
  digitalWrite(A2, LOW);
  float distance = pulseIn(A3, HIGH) / 58.00;
  delay(10);
  return distance;
}
void setup()
{
    //超声波测距
  pinMode(A2, OUTPUT);
  pinMode(A3, INPUT);
  Serial.begin(115200);
  mySerial.begin(9600);
  pinMode(digitalPin, INPUT); // 设置数字引脚为输入模式
  pinMode(5, OUTPUT);
  digitalWrite(5, LOW);
  pinMode(6, OUTPUT);
  digitalWrite(6, LOW);
}

void loop()
{
    chao1 = checkdistance_A2_A3();

  if (Serial.available() > 0) {
    int incomingByte = Serial.read();  // 读取串口数据
    if (incomingByte >= '0' && incomingByte <= '9') {
      int num = incomingByte - '0';  // 将ASCII码转换为数字
      Serial.print("I received number: ");
      Serial.println(num);  // 打印接收到的数字 
      Serial.println(flag);
      if(num==1&&flag==0)
    { 
      digitalWrite(5, HIGH);
      delay(2000);
      digitalWrite(5, LOW);
      num=2;
      flag=1;
    }
    else if(flag==1&&chao1>180)
    {
      delay(5000);
      digitalWrite(6, HIGH);
      delay(2000);
      digitalWrite(6, LOW);
      num=3;
      flag=0;
    }
    }
   
  }
  // Serial.print("测量距离: ");
  // Serial.print(chao1);
  // Serial.println(" cm");

  // delay(500); // 等待500毫秒再次测量
while (Serial.available())
{
mySerial.write(Serial.read());
}
// while(mySerial.available())
// {
// Serial.write(mySerial.read());
// }
   
// delay(10000);

// mySerial.println("AT+CMGF=1");
// delay(1000);
// mySerial.println("AT+CMGS=\"17350056209\""); //这里改成你的号码
// delay(1000);
// mySerial.print("Brother Dei, your house is on fire!!!\r\n"); //这里写内容
// delay(1000);
// mySerial.write(0x1A);//发送：0x1A，即“CTRL+Z”的键值，用于告诉 SIM800C，要执行发送操作
// //发送： 0x1B，即“ESC”的键值，用于告诉 SIM800C，取消本次操作，不执行发送。


    int sensorValue = analogRead(analogPin); // 读取模拟值
    int sensorState = digitalRead(digitalPin); // 读取数字值
    Serial.print("Sensor Value: ");
    Serial.print(sensorValue); // 打印模拟值
    Serial.print(" | Sensor State: ");
    Serial.println(sensorState); // 打印数字值（0或1）
    delay(1000);
    if (sensorValue <= 100 && sensorState == 0)
    {
    delay(1000);
    mySerial.println("AT");
    delay(1000);
    mySerial.println("ATD17350056209;\r");//这里改成你的号码
    delay(20000);
    mySerial.println("ATH"); 
    }

      
}








// #include <SoftwareSerial.h>
// // SoftwareSerial mySerial(2, 3);//Serial RX, TX白
// SoftwareSerial mySerial(2, 3);//Serial RX, TX白
// // 定义火焰传感器的模拟输出和数字输出引脚
// int analogPin = A0; // 模拟输出连接到A0
// int digitalPin = 4; // 数字输出连接到数字2
// void setup()
// {
// Serial.begin(9600);
// mySerial.begin(9600);
// pinMode(digitalPin, INPUT); // 设置数字引脚为输入模式
// pinMode(5, OUTPUT);
// digitalWrite(5, LOW);
// }

// void loop()
// {
// while (Serial.available())
// {
// mySerial.write(Serial.read());
// }
// // while(mySerial.available())
// // {
// // Serial.write(mySerial.read());
// // }
   
// // delay(10000);

// // mySerial.println("AT+CMGF=1");
// // delay(1000);
// // mySerial.println("AT+CMGS=\"17350056209\""); //这里改成你的号码
// // delay(1000);
// // mySerial.print("Brother Dei, your house is on fire!!!\r\n"); //这里写内容
// // delay(1000);
// // mySerial.write(0x1A);//发送：0x1A，即“CTRL+Z”的键值，用于告诉 SIM800C，要执行发送操作
// // //发送： 0x1B，即“ESC”的键值，用于告诉 SIM800C，取消本次操作，不执行发送。

// // delay(1000);
// // mySerial.println("AT");
// // delay(1000);
// // mySerial.println("ATD17350056209;\r");//这里改成你的号码
// // delay(20000);
// // mySerial.println("ATH"); 
// // int sensorValue = analogRead(D4);
//     // int sensorState = digitalRead(D0);
//     // if (sensorValue <= 800 || sensorState == LOW) {
//     //     Fire.print("有明火出现");
//     //     // digitalWrite(D2, HIGH);
//     //     Fire.color("#F08080");
//     // } else {
//     //     Fire.print("没有明火出现");
//     //     // digitalWrite(D2, LOW);
//     //     Fire.color("#90EE90");
//     // }
//     int sensorValue = analogRead(analogPin); // 读取模拟值
//     int sensorState = digitalRead(digitalPin); // 读取数字值
//     Serial.print("Sensor Value: ");
//     Serial.print(sensorValue); // 打印模拟值
//     Serial.print(" | Sensor State: ");
//     Serial.println(sensorState); // 打印数字值（0或1）
//     delay(1000);
//     if (sensorValue <= 100 || sensorState == 0)
//     {
//       delay(1000);
//       mySerial.println("AT");
//       delay(1000);
//       mySerial.println("ATD17350056209;\r");//这里改成你的号码
//       delay(20000);
//       mySerial.println("ATH"); 
//     }
//     // else{
//     //   digitalWrite(5, LOW);
//     // } 
      
// }



// #include <SoftwareSerial.h>
// SoftwareSerial mySerial(2, 3);

// void setup()
// {
// Serial.begin(9600);
// mySerial.begin(9600);
// }

// void loop()
// {
// while (Serial.available())
// {
// mySerial.write(Serial.read());
// }
// // while(mySerial.available())
// // {
// // Serial.write(mySerial.read());
// // }

// // delay(10000);

// // mySerial.println("AT+CMGF=1");
// // delay(1000);
// // mySerial.println("AT+CMGS=\"11111111111\""); //这里改成你的号码
// // delay(1000);
// // mySerial.print("Brother Dei, your house is on fire!!!\r\n"); //这里写内容
// // delay(1000);
// // mySerial.write(0x1A);//发送：0x1A，即“CTRL+Z”的键值，用于告诉 SIM800C，要执行发送操作
// // //发送： 0x1B，即“ESC”的键值，用于告诉 SIM800C，取消本次操作，不执行发送。

// delay(1000);
// mySerial.println("AT");
// delay(1000);
// mySerial.println("ATD17350056209;\r");//这里改成你的号码
// delay(20000);
// mySerial.println("ATH"); 
// }